home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / zpont311.lha / zpoint-3.11 / Rexx / LhaEx.zprx < prev    next >
Text File  |  1995-01-16  |  5KB  |  180 lines

  1. /*
  2.    $VER: LhaExtract.zprx 1.1 (28.12.94) Copyright (c) Nils Görs.
  3.  
  4.    Ein ARexx-Skript für "Zodiac's Point"
  5.  
  6.  
  7.    FUNKTIONSBESCHREIBUNG:
  8.  
  9.    Dieses Skript erstellt,  mittels der "rexxtricks.library", eine
  10.    Liste des LhA-Archives.  Aus dieser  Liste heraus  können  dann
  11.    einzelne Dateien aus dem LhA-Archiv entpackt werden.
  12.  
  13.  
  14.    INSTALLATION:
  15.  
  16.     Kopieren sie dieses Skript in  das  Rexx-Verzeichnis  von  ZP  und
  17.     fügen  sie  danach  der  Datei  'fkeys.zp'  auf Wunsch den Eintrag
  18.     "F1:SYS:Rexxc/RX ZPOINT:Rexx/LhaEx.zprx %s" hinzu.
  19.  
  20.  
  21.    AUTOR DIESES SKRIPTS:
  22.  
  23.        Nils Görs              Tel. : +49 (0)202 784258
  24.        Kaiserstr. 97a         EMail: N.Goers@Art-Line.wupper.de
  25.        42329 Wuppertal          oder über das ZP-Support-Brett.
  26.  
  27.    Verwenden Sie bitte nach Möglichkeit elektronische Post!
  28.  
  29.    Das Skript benötigt Jürgen Kohrmeyers "rexxtricks.library" (>=37.20)
  30.    und die "rexxreqtools.library" von Nico François.
  31.  
  32. */
  33.  
  34. /*Wie breit darf das Listview-Fenster denn sein,mein Herr ?*/
  35.  
  36. Fensterbreite = 600
  37.  
  38.  
  39. /* Default-Zielverzeichnis                                 */
  40.  
  41. destdir = "ram:"
  42.  
  43.  
  44. /* Wenn dieser Wert auf 1 steht, dann wird das
  45.    Zielverzeichnis erfragt (wohin soll entpackt werden ?)  */
  46.  
  47. DirErfragen = 1
  48.  
  49.  
  50. /*  Zielverzeichnis über einen String oder über einen
  51.     Directoryrequest erfragen ?
  52.     0 = Directoryrequest
  53.     1 = Stringrequest                                      */
  54.  
  55. ReqErfragen = 0
  56. /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  57.  *      Bitte geben Sie hier ihre Präferenzen ein !                *
  58.  *******************************************************************/
  59.  
  60. /*******************************************************************
  61.  *      Bitte unterhalb dieser Zeile nichts mehr verändern!        *
  62.  *******************************************************************/
  63.  
  64. NL  = '0a'x
  65. Anf = '"'
  66. OPTIONS RESULTS
  67.  
  68. /* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
  69. PARSE ARG zpPort
  70. IF zpPort == "" THEN
  71.    zpPort = "ZPoint"
  72. ADDRESS VALUE zpPort
  73.  
  74. /* öffne alle nötigen libraries - wenn nicht möglich Programmende */
  75.  
  76. IF ~SHOW('LIBRARIES','rexxreqtools.library') THEN
  77.   IF ~ADDLIB('rexxreqtools.library',0,-30,0) THEN
  78.     EXIT
  79.  
  80. IF ~SHOW('LIBRARIES','rexxtricks.library') THEN
  81.   IF ~ADDLIB('rexxtricks.library',0,-30,0) THEN
  82.     EXIT
  83.  
  84. /* ------------------------ Hauptprogramm ------------------------ */
  85.  
  86. WHICHLEVEL
  87. IF (RESULT ~== 'BOARD') THEN
  88.   DO
  89.     CALL rtezrequest('Bitte erst ein File auswählen!','OK','Fehler','rt_pubscrname='zpPort)
  90.     EXIT
  91.   END
  92.  
  93. SAVEMESSAGEBODY 'T:Tmp.lha'
  94.  
  95.      IF ~OPEN(dat,"t:Tmp.lha",Read) THEN/* öffne File */
  96.        DO                               /* hat nicht geklappt! */
  97.         CALL rtezrequest("File: T:TMP.LHA nicht gefunden!", " ENDE ",,"rt_pubscrname="zpPort)
  98.        EXIT                             /* und Program beenden! */
  99.        END
  100.      ELSE                               /* File konnte geöffnet werden! */
  101.  
  102.       CALL SEEK(dat,2,Begin)            /* springe an das zweite Byte im File */
  103.        String=READCH(dat,3)             /* und lese ab dort drei Zeichen */
  104.  
  105.       IF COMPARE(String,"-lh") ~== 0 THEN /* testen, ob es sich um ein
  106.                                             LhA Archive handelt */
  107.    DO 
  108.     CALL rtezrequest('Dies ist kein LhA Archiv !','OK','Fehler',"rt_pubscrname="zpPort)
  109.     CALL CLOSE(dat)
  110.  
  111. ADDRESS COMMAND  'DELETE t:Tmp.lha QUIET >NIL:'
  112.  
  113.     EXIT
  114.   END
  115.  
  116.      CALL CLOSE(dat)
  117.  
  118. ADDRESS COMMAND
  119.  'LHA vq T:Tmp.lha >t:TmpDir'
  120.  
  121. IF ~READFILE("t:tmpDir",zeile) THEN DO
  122.  
  123.    CALL rtezrequest("LHA-Fileliste konnte nicht gelesen werden",,,"rt_pubscrname="zpPort)
  124.  
  125.   'Delete T:TmpDir QUIET >NIL:'
  126.   'Delete T:Tmp.lha QUIET >NIL:'
  127.   EXIT
  128. END
  129.  
  130. lv = 0
  131. DO i = 3 TO zeile.count -1
  132.   liste.lv = (zeile.i)
  133.   lv = lv + 1
  134. END
  135. liste.count = lv
  136.  
  137. fenster.title     = 'Bitte wählen'
  138. fenster.gadgettext= 'mit _Unterv.|_ohne Unterv.|_Abbrechen'
  139. fenster.pubscreen = zpPort
  140. fenster.width     = fensterbreite
  141. fenster.font      = 'SCREEN'
  142. fenster.sort      = 'TRUE'
  143.  
  144.  
  145. IF VIEWLIST('liste','fenster','destvar') THEN DO
  146.   do i=0 to destvar.count
  147.     if pos(" ",destvar.i)>0 then destvar.i='"'destvar.i'"'
  148.   end
  149.   ok=writefile("t:tmpdir",destvar)
  150.  
  151. IF direrfragen = 1 THEN
  152.  DO
  153.   IF reqerfragen == 1 THEN DO
  154.    destdir = rtgetstring(,'Bitte Zielverzeichnis eingeben' || NL ||,
  155.                           'z.B. T: oder sys:tools/','Verzeichnis ?','OK',"rt_pubscrname="zpPort,res)
  156.    IF RES == 0 THEN DO
  157.    call DELETING
  158.    EXIT
  159.    END
  160.   END
  161.   ELSE
  162.    destdir = rtfilerequest(, , "Bitte Zielverzeichnis auswählen",, "rtfi_flags = freqf_nofiles",
  163.    "rtfi_initialpath="destdir "rt_pubscrname="zpPort,res)
  164.    IF RES == 0 THEN DO
  165.    call DELETING
  166.    EXIT
  167.    END
  168.  END
  169.  
  170. IF destvar.gadget == 2 THEN
  171. 'LHA -it:tmpdir -x2 e T:Tmp.lha' Anf||destdir||Anf
  172. ELSE
  173. 'LHA -it:tmpdir x T:Tmp.lha' Anf||destdir||Anf
  174.  
  175. END
  176. Deleting:
  177. 'Delete t:tmpdir QUIET >NIL:'
  178. 'Delete T:Tmp.lha QUIET >NIL:'
  179.  
  180.